$(function () {

    //初始化总价和总数量
    bigtotal()
    allnum()
    
    // 全选
    $('.allsel').on('change', function () {
        // 获取自己checked属性
        let flag = $(this).prop('checked')
        // 赋值
        $('.sinsel,.allsel').prop('checked', flag)
        bigtotal()
    })

    // 取消全选
    //写法1
    // $('.sinsel').on('click',function(){
    //     let flag = true;
    //     $('.sinsel').each(function(index,value){
    //         if(!$(this).prop('checked')){
    //             flag = false
    //             return
    //         }
    //     })
    //     $('.allsel').prop('checked',flag)
    // })

    //写法2
    $('.sinsel').on('click', function () {
        //获取物品总数
        let allsinsellength = $('.sinsel').length;
        // 获取被选择的物品总数
        let checksinsellength = $('.sinsel:checked').length;
        // 取反并给值   !(checksinsellength < allsinsellength) 当小于的时候取反获得false 当大于等于的时候取反获得true
        $('.allsel').prop('checked', !(checksinsellength < allsinsellength))
        bigtotal()
    })


    $('.add').on('click', function () {
        let projectnum = $(this).siblings('.pronum').val();
        $(this).siblings('.pronum').val(++projectnum)
        smalltotal()
        bigtotal()
        allnum()
    })

    $('.reduce').on('click', function () {
        let projectnum = $(this).siblings('.pronum').val();
        if (projectnum <= 1) return;
        $(this).siblings('.pronum').val(--projectnum)
        smalltotal()
        bigtotal()
        allnum()
    })

    $('.pronum').on('keyup',function(){
        let numtext = $(this).val()
        let reg = /[a-z]|[A-Z]|[^%&',;=?$\x22]|[^~\x22]/;
        if(reg.test(numtext)){
            $(this).val(parseInt(numtext))
        }
        smalltotal()
        bigtotal()
    })


    // 计算小计
    // value传入元素
    function smalltotal(value) {
        // 第一种写法 点击其他小计也会跟着跟新
        $('.pronum').each(function (index, value) {
            // 获取数量
            let projectnum = $(this).val();
            // 获取价格
            let projectmoney = $(this).closest('.shopcar-body').find('.sinprice').text();
            $(this).closest('.shopcar-body').find('.smallprice').text((projectnum * projectmoney).toFixed(2));
        })
        // 第二种写法 只会更新触发的那一条
        // let projectnum = $(value).closest('.shopcar-body').find('.pronum').val()
        // let projectmoney = $(value).closest('.shopcar-body').find('.sinprice').text()
        // $(value).closest('.shopcar-body').find('.smallprice').text((projectnum * projectmoney).toFixed(2));
    }

    function bigtotal() {
        // 定义总价格
        let allmoney = 0
        // 定义总数量
        let allnum = 0
        $('.sinsel:checked').each(function (index, value) {
            // 获取被选择物品的价格
            let money = Number($(this).closest('.shopcar-body').find('.smallprice').text());
            // 获取被选择物品的数量
            let num = Number($(this).closest('.shopcar-body').find('.pronum').val());
            allmoney += money
            allnum += num
        })
        $('.allPrice').text(allmoney.toFixed(2))
        $('.allNum').text(allnum)
    }

    function allnum(){
        let allnum = 0;
        $('.pronum').each(function(){
            allnum+=Number($(this).val())
        })
        $('.shopcar-title-num').text(allnum)
    }
})